package com.feihao.zhou.WorkTest;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * 1.分析以下需求，并用代码实现：
 * (1)生成10个1至100之间的随机整数(不能重复)，存入一个List集合(可以先不使用泛型，泛型明天讲)
 * (2)编写方法对List集合进行排序,禁用Collections.sort方法和TreeSet
 * (2)然后利用迭代器遍历集合元素并输出
 * (3)如：15 18 20 40 46 60 65 70 75 91
 */
public class ListSortTest {
    public static void main(String[] args) {

        //创建list集合
        ArrayList<Integer> list = new ArrayList();
        //生产10个1-100的随机整数：
        Random random = new Random();
        for (int i = 0; i < 10; i++) {
            int r = random.nextInt(100) + 1;
            list.add(r);
        }

        //去重：
        ArrayList<Integer> list1 = quChong(list, random);


        //另一种在创建集合的时候就实现去重的方法：
        ArrayList<Integer> list2 = new ArrayList<>();

        while (list2.size() != 10) {
            int r = random.nextInt(100) + 1;
            //判断集合是否包含次随机数，有则不添加，没有则添加：
            if (!list2.contains(r)){
                list2.add(r);
            }
        }

        System.out.println("list2:::"+list2);

        /*Collections.sort(list);*/
        //进行排序方法：

        //sortListMethod(list1);

        /*for (Integer integer : list1) {
            System.out.print(integer + "  ");
        }*/
    }

    public static ArrayList<Integer> quChong(ArrayList<Integer> list, Random random) {
        loop1:
        for (int i = 0; i < list.size(); i++) {
            for (int j = 0; j < list.size(); j++) {
                if (i == j) {
                    j++;
                }
                //如果遍历伦次数达到集合的长度，就不用再遍历了
                if (i == list.size() - 1) {
                    break loop1;
                }
                if (list.get(i).equals(list.get(j))) {
                    list.remove(i);//如果存在两数相等，把其中一个数移除。
                    //再添加一个数：
                    list.add(random.nextInt(100) + 1);
                    //再将i\j都设置为  0，  再次重新遍历比较。。
                    i = 0;
                    j = 0;
                }
            }
        }
        return list;
    }

    public static void sortListMethod(List<Integer> list) {
        for (int i = 0; i < list.size(); i++) {
            for (int j = 0; j < list.size() - 1 - i; j++) {

                if (list.get(j) > list.get((j + 1))) {
                    //两元素进行互换
                    Integer set = list.set(j, list.get(j + 1));
                    list.set((j + 1), set);
                }
            }
        }

        /*Object[] objects = list.toArray();
        for (int i = 0; i < objects.length; i++) {
            for (int j = 0; j < objects.length - 1 - i; j++) {
                if (objects[j] < objects[j+1])
            }
        }*/
    }
}
